package br.edu.ifce.mflj.dados;

import java.awt.Image;

import javax.swing.ImageIcon;
/**
 * Classe que representa uma peça posicionada em uma casa do tabuleiro
 * 
 * @author fiuza
 *
 */
public class Peca {

	public static final int		PECA_BRANCA 	= 0,
								PECA_PRETA		= 1,
								DAMA_BRANCA 	= 2,
								DAMA_PRETA		= 3;

	private Image	imagem;

	private Integer	tipoPeca,
					coordenadaX,
					coordenadaY,
					coluna,
					linha;

	/**
	 * @param coordenadaX Determina a posição X da imagem da peça em relação ao JPanel. O campo casaX da classe determina a posição X na matrix do tabuleiro
	 * @param coordenadaY Determina a posição Y da imagem da peça em relação ao JPanel. O campo casaY da classe determina a posição Y na matrix do tabuleiro.
	 * @param tipoPeca Pode ser Peca.PECA_BRANCA, Peca.PECA_PRETA, Peca.DAMA_BRANCA ou Peca.DAMA_PRETA. Determina a imagem da peça.
	 */
	public Peca( Integer coordenadaX, Integer coordenadaY, Integer tipoPeca ){
		String nomeImagem = "";

		this.tipoPeca		= tipoPeca;
		this.coordenadaX	= coordenadaX;
		this.coordenadaY	= coordenadaY;

		switch ( this.tipoPeca ) {
			case Peca.PECA_BRANCA:
				nomeImagem = "imagens/peca-branca.png";
				break;

			case Peca.PECA_PRETA:
				nomeImagem = "imagens/peca-preta.png";
				break;

			case Peca.DAMA_BRANCA:
				nomeImagem = "imagens/dama-branca.png";
				break;

			case Peca.DAMA_PRETA:
				nomeImagem = "imagens/dama-preta.png";
				break;

			default:
				break;
		}

		imagem = new ImageIcon( nomeImagem ).getImage();
	}

	/**
	 * @return the imagem
	 */
	public Image getImagem() {
		return imagem;
	}

	/**
	 * @param imagem the imagem to set
	 */
	public void setImagem(Image imagem) {
		this.imagem = imagem;
	}

	/**
	 * @return the tipoPeca
	 */
	public Integer getTipoPeca() {
		return tipoPeca;
	}

	/**
	 * @param tipoPeca the tipoPeca to set
	 */
	public void setTipoPeca(Integer tipoPeca) {
		this.tipoPeca = tipoPeca;
	}

	/**
	 * @return the coordenadaX
	 */
	public Integer getCoordenadaX() {
		return coordenadaX;
	}

	/**
	 * @param coordenadaX the coordenadaX to set
	 */
	public void setCoordenadaX(Integer coordenadaX) {
		this.coordenadaX = coordenadaX;
	}

	/**
	 * @return the coordenadaY
	 */
	public Integer getCoordenadaY() {
		return coordenadaY;
	}

	/**
	 * @param coordenadaY the coordenadaY to set
	 */
	public void setCoordenadaY(Integer coordenadaY) {
		this.coordenadaY = coordenadaY;
	}

	public Integer getColuna() {
		return coluna;
	}

	public void setColuna(Integer coluna) {
		this.coluna = coluna;
	}

	public Integer getLinha() {
		return linha;
	}

	public void setLinha(Integer linha) {
		this.linha = linha;
	}

	public void resetarPosicaoInicial(){
		this.coordenadaX = this.getColuna() * DimensoesTabuleiro.LADO_CASA + DimensoesTabuleiro.LIMITE_INICIAL_X;
		this.coordenadaY = this.getLinha() * DimensoesTabuleiro.LADO_CASA + DimensoesTabuleiro.LIMITE_INICIAL_Y;
	}

	/**
	 * @return the linhaObjetivo
	 */
	public Integer getLinhaObjetivo() {
		return this.getTipoPeca().equals( Peca.PECA_BRANCA ) ? 0 : 7;
	}
}
